用Objective-C等面向对象语言编程时,”对象”(object)就是”基本构造单元”(building block)。开发者可以通过对象来存储并传递数据。在对象之间传递数据并执行任务的过程就叫做”消息传递”(Messaging)。当程序运行起来以后,为其提供相关支持的代码叫做”Objective-C运行期环境”(Objective-C runtime),它提供了一些使得对象之间能够传递消息的重要函数,并且包含创建类实例所用的全部逻辑。即我们写的oc代码,它在运行的时候是转换成了runtime方式运行的,更好的理解runtime,也能帮我们更深的掌握oc语言。每一个oc的方法,底层必然有一个与之对应的runtime方法。
那什么是Objective-C runtime?
简单来说,Objective-C runtime是一个实现Objective-C语言的C库。对象可以用C语言中的结构体表示,而方法(methods)可以用C函数实现。事实上,他们差不多也是这么干了,另外再加上了一些额外的特性。这些结构体和函数被runtime函数封装后,我们就可以在程序运行时创建,检查,修改类,对象和它们的方法。
runtime的常见方法
|
|
runtime在开发中的用途
1.动态的遍历一个类的所有成员变量,属性,方法,协议等,可用于字典转模型,归档解档操作
|
|
应用场景:
- 可以利用遍历类的属性,来快速的进行归档操作。
- 将从网络上下载的json数据进行字典转模型。
|
|
归档解档方法
|
|
字典转模型
|
|
2.交换方法,可以是不同类的方法,也可以是同类的,用在修改全局属性很便利.
|
|
3.添加方法
|
|
4.拦截调用动态添加
|
|
5.方法上加功能,可用于页面埋点加log
|
|
6.动态变量控制
|
|
7.拓展属性
|
|
以上是关于runtime一些常见的用法,关于详细的原理介绍推荐阅读以下博客: